package com.java3_12;

import java.awt.geom.Ellipse2D;
import java.util.*;

public class java3_12 {
    //    public static void main(String[] args) {
//        //集合
//        /*
//        *(1)Collection接口  --  List and Set
//        *(2)Map接口 --
//        * */
//
//
//
//    }
//    public static void main(String[] args) {
//        //在集合的括号中直接添加另一个集合 == addAll
//        //可边长的数组
//        List list = new ArrayList();
//        list.add(123);
//        list.add(123);
//        list.add(123);
//        list.add("hello world");
//        list.add("hello world");
//        list.add('Z');
//        list.add(3.14);
//        list.add(3.14);
//        System.out.println(list);
//        //使用父类中的toString
//        List list1 = getList(list);
//        System.out.println(list1);
//
//
//    }
//    //除重
//    public static List getList(List list){
//        //使用了addAll方法
//        LinkedHashSet linkedHashSet = new LinkedHashSet(list);
//        ArrayList list1 = new ArrayList(linkedHashSet);
//        return list1;
//    }
//    public static void main(String[] args) {
//        //Collection中的方法
////        ArrayList list = new ArrayList();
////        list.add(123);
////        list.add("hello world");
////        System.out.println(list);
//
//        //ArrayList list = new ArrayList();
////        ArrayList list1 = new ArrayList();
////        list1.add(123);
////        list1.add("hello world");
////        list1.add('Z');
////        list1.add(3.14);
//        //当成了一个元素了
////        list.add(list1);
////        System.out.println(list);
////        //将一个集合中的元素直接添加到另一个集合中
////        list.addAll(list1);
////        System.out.println(list);
////        System.out.println(list.size());
////        for (int i = 0; i < list1.size(); i++) {
////            System.out.println(list1.get(i));
////        }
//
//        //size可以用来遍历集合
//
//        //isEmpty
//        // return size == 0;
////        System.out.println(list1.isEmpty());
//
//
//        //迭代器
////        ArrayList list1 = new ArrayList();
////        list1.add(123);
////        list1.add("hello world");
////        list1.add('Z');
////        list1.add(3.14);
//
//        //迭代器
////        Iterator iterator = list1.iterator();
////        while(iterator.hasNext()){
////            System.out.println(iterator.next());
////        }
//
//        //增强for循环
////        for(Object object : list1){
////            System.out.println(object);
////        }
//
////        ArrayList list1 = new ArrayList();
////        list1.add(123);
////        list1.add("hello world");
////        list1.add('Z');
////        list1.add(3.14);
////        Student student = new Student("zhangsan",24);
////        list1.add(student);
////
////        //contains
////        System.out.println(list1.contains(123));
////        //重写之后就是重写的equals方法
////        System.out.println(list1.contains(new Student("zhangsan",24)));
////        ArrayList list1 = new ArrayList();
////        list1.add(123);
////        list1.add("hello world");
////        list1.add('Z');
////        list1.add(3.14);
////        Student student = new Student("zhangsan",24);
////        list1.add(student);
////
////        ArrayList list = new ArrayList();
////        list.add(123);
////        list.add(3.14);
////        list.add(3);
////        System.out.println(list1);
////        System.out.println(list.containsAll(list1));
////        list1.clear();
////        System.out.println(list1);
//
//        //使用的是List不能直接删除123；
////        list.remove(Integer.valueOf(123));
////        list.remove(3.14);
////        System.out.println(list);
//
////        list1.retainAll(list);
////        System.out.println(list1);
//
//        //集合数组的转换
//
//        //集合变成数组 --> toArray
////        ArrayList list = new ArrayList();
////        list.add(123);
////        list.add("hello world");
////        list.add(3.14159);
////        list.add('A');
////        Object[] array = list.toArray();
////        for (int i = 0; i < array.length; i++) {
////            System.out.println(array[i]);
////        }
//
//        //数组变集合 --> asList
////        Integer[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
////        List<Integer> list = Arrays.asList(arr);
////        System.out.println(list);
//
//
//    }
//    public static void main(String[] args) {
////        Collection list = new ArrayList();
////        list.add(123);
////        list.add("hello world");
////        list.add(3.14);
////        list.add('A');
////        System.out.println(list);
////        list.remove(123);
////        System.out.println(list);
//
//        //List
//        ArrayList list = new ArrayList();
//        list.add(123);
//        list.add("hello world");
//        list.add(3.14);
//        list.add('A');
//        list.add(123);
//
//        System.out.println(list);
//        //List是一个动态数组 -- 索引
////        list.add(1,"zhangsan");
////        System.out.println(list);
//
////        list.remove(Integer.valueOf(123));
////        System.out.println(list);
//
//        //使用get方法遍历
////        for (int i = 0; i < list.size(); i++) {
////            System.out.print(list.get(i) +" ");
////        }
//
//        //获取子集合
////        List list1 = list.subList(1, 3);
////        System.out.println(list1);
//
////        int i = list.indexOf(123);
////        System.out.println(i);
////        int i1 = list.lastIndexOf(123);
////        System.out.println(i1);
//
////        list.set(1,"hello java");
////        System.out.println(list);
//
//        //主要的两种实现类
//        //ArrayList 、 LinkedList
//
//
//
//    }
    public static void main(String[] args) {
        //Set
//        HashSet hashSet = new HashSet();
//        hashSet.add(123);
//        hashSet.add("hello world");
//        hashSet.add(3.14);
//        hashSet.add('W');
//        System.out.println(hashSet);

        //有双向链表记录位置
//        LinkedHashSet linkedHashSet = new LinkedHashSet();
//        linkedHashSet.add(123);
//        linkedHashSet.add("hahaha");
//        linkedHashSet.add(3.14);
//        linkedHashSet.add('O');
//
//        System.out.println(linkedHashSet);

        //比较器
        //自然排序
//        People p1 = new People("zhangsan", 20);
//        People p2 = new People("lisi", 20);
//        People p3 = new People("wangwu", 25);
//        People p4 = new People("zhaoliu", 22);
//        People[] peoArr = {p1, p2, p3, p4};
//        Arrays.sort(peoArr);
//        for (int i = 0; i < peoArr.length; i++) {
//            System.out.println(peoArr[i].toString());
//        }

        //定制排序
//        People p1 = new People("zhangsan", 20);
//        People p2 = new People("lisi", 20);
//        People p3 = new People("wangwu", 25);
//        People p4 = new People("zhaoliu", 22);
//        People[] peoArr = {p1, p2, p3, p4};
//
//        Arrays.sort(peoArr, new Comparator() {
//            @Override
//            public int compare(Object o1, Object o2) {
//                if(o1 instanceof People o11 && o2 instanceof People o22){
//                    int value = Integer.compare(o11.getAge(),o22.getAge());
//                    if(value != 0){
//                        return value;
//                    }
//                    return o11.getName().compareTo(o22.getName());
//                }
//                throw new RuntimeException("类型错误");
//            }
//        });
//        for (int i = 0; i < peoArr.length; i++) {
//            System.out.println(peoArr[i].toString());
//        }
//
//        People p1 = new People("zhangsan", 20);
//        People p2 = new People("lisi", 20);
//        People p3 = new People("wangwu", 25);
//        People p4 = new People("zhaoliu", 22);
//
//        TreeSet treeSet = new TreeSet();
//        treeSet.add(p1);
//        treeSet.add(p2);
//        treeSet.add(p3);
//        treeSet.add(p4);
//        System.out.println(treeSet);


    }


}
